<?php
namespace app\member\controller;
class Run extends Common{
    function __construct(){
        parent::__construct();
        $this->assign('_nav',json_encode(config("navs.2.children"),JSON_UNESCAPED_UNICODE));
    }
    /**
     * #任务管理器#{针对在线设备显示当前任务}
     * 任务管理器(针对在线设备显示当前任务)
     * @return [type] [description]
     */
    function index($offLine=0){
    	$list=[];
    	if($offLine){
    		$list=model('device')->getTaskQueue($this->user['id']);
    		//p($list);
    	}
    	$this->assign('offLine',$offLine);
    	$this->assign('list',json_encode($list,JSON_UNESCAPED_UNICODE));
        return view();
    }

    /**
     * 通过在线设备ID获取设备的任务列表
     * @param  array  $ids 设备ID
     * @return json
     */
    function getData($ids=[]){
    	if(request()->isAjax()||request()->isPost()){
            if(is_string($ids)){
                $ids=json_decode($ids,true);
            }
    		if(empty($ids)){
    			$this->success('获取数据成功','',[]);
    			die;
    		}
    		$list=model('device')->getTaskQueue($this->user['id'],$ids);
    		$this->success('获取数据成功','',$list);
    	}
    }
    /**
     * 会员点击完成任务按钮
     * @param  integer $device_id [description]
     * @return [type]             [description]
     */
    function finish($device_id=0){
    	if(request()->isAjax()||request()->isPost()){
    		if($device_id<=0){
    			$this->error('设备不存在');
    		}
    		$member_id=$this->user['id'];
    		$has=db('device')->where(['member_id'=>$member_id,'id'=>$device_id])->count();
    		if($has<=0){
    			$this->error('设备不存在');
    		}
    		$rs=model('task_device')->nextTask($member_id,$device_id);
    		if($rs['success']){
    			$this->success($rs['msg']);
    		}else{
    			$this->error($rs['msg']);
    		}
    	}
    }
    /**
     * 任务列表的上下移动
     * @param  integer  $device_id 设备ID
     * @param  array  	$val [{task_id,sort}]
     * @return json
     */
    function record($device_id=0,$val=[]){
    	if(request()->isAjax()||request()->isPost()){
	    	if($device_id<=0){
	    		$this->error('设备不存在');
	    	}
	    	if(empty($val)){
	    		$this->error('缺少数据');
	    	}
	    	$ids=[];
	    	
	    	foreach($val as $v) {
	    		if(!isset($v['id'])||$v['id']<=0||!isset($v['sort'])||$v['sort']<0){
	    			$this->error('数据有误');
	    		}
	    		array_push($ids,$v['id']);
	    	}
            $uid=$this->user['id'];
	    	$where=[
	    		'member_id'=>$uid,
	    		'device_id'=>['device_id','<>',$device_id],
	    		'id'=>['id','in',$ids],
	    	];
	    	$nums=db('task_device')->where($where)->count();
	    	if($nums>0){
	    		$this->error('数据有误');
	    	}
	    	$save=model('task_device')->edit($val);
	    	if(!$save){
	    		$this->error('系统繁忙、操作失败');
	    	}
            //通知后台任务管理器更新任务队列
            model('task_device')->updateDev($uid,[],$device_id);
	    	$this->success('操作成功');
    	}
    }
    /**
     * 移除设备任务
     * @param  integer $device_id 设备ID
     * @param  integer $id        设备任务ID （表task_device）
     * @return json
     */
    function remove($device_id=0,$id=0){
    	if(request()->isAjax()||request()->isPost()){
    		if($device_id<=0||$id<=0){
    			$this->error('设备不存在');
    		}
    		$where=[
    			//'member_id'=>$this->user['id'],
    			'device_id'=>$device_id,
    			'id'=>$id,
    		];
    		$has=db('task_device')->where($where)->count();
    		if($has<=0){
    			$this->error('该项不存在');
    		}
    		$del=model('task_device')->del(['id'=>$id]);
    		if(!$del){
    			$this->error('系统繁忙、删除失败');
    		}
            //通知后台任务管理器更新任务队列
            model('task_device')->updateDev($this->user['id'],[],$device_id);
    		$this->success('移除成功');
    	}
    }
}